﻿// owner 蒋家伟

#pragma once
#include "DataSchema_home.h"

namespace jsdk
{
    // 类别描述 ：Element 唯一标识
    class DATASCHEMA_EXPORT ElementId
    {
    public:
        ElementId();
        ElementId(int64_t value);
        ElementId(const ElementId& elementId);
        const std::int64_t& toValue() const;
        ElementId& operator=(const ElementId& elementId);
        bool operator<(const ElementId& elementId) const;
        bool operator>(const ElementId& elementId) const;
        bool operator==(const ElementId& elementId) const;
        bool isValid() const;

    public:
        static ElementId s_InvalidId;
    private:
        std::int64_t m_elementId;
    };

    struct DATASCHEMA_EXPORT ElementHash
    {
        std::size_t operator()(const  ElementId& elementId) const;
    };
}
